#pragma once

#include "CPenGeometry.h"

class CPlainPen
{
public: 
	CPlainPen(const CPlainPen &);
	CPlainPen();
	~CPlainPen();
	void Set(XFLOAT, XFLOAT, XFLOAT);
	XINT32 IsEmpty();
	XINT32 IsCircular();
	XINT32 IsSimple();
	XINT32 IsCompound();
	HRESULT SetDashStyle(enum XcpDashStyle);
	HRESULT GetDashArray(XUINT32, XFLOAT *);
	HRESULT SetDashArray(const XFLOAT * rgDashes, XINT32 nSourceCount);
	XFLOAT GetWidth();
	void SetWidth(XFLOAT val);
	XFLOAT GetHeight();
	void SetHeight(XFLOAT val);
	XFLOAT GetAngle();
	void SetAngle(XFLOAT);
	enum XcpPenCap GetStartCap();
	void SetStartCap(enum XcpPenCap val);
	enum XcpPenCap GetEndCap();
	void SetEndCap(enum XcpPenCap val);
	enum XcpPenCap GetDashCap();
	void SetDashCap(enum XcpPenCap val);
	enum XcpLineJoin GetJoin();
	void SetJoin(enum XcpLineJoin val);
	XFLOAT GetMiterLimit();
	void SetMiterLimit(XFLOAT val);
	enum XcpDashStyle GetDashStyle();
	XFLOAT GetDashOffset();
	void SetDashOffset(XFLOAT val);
	XUINT32 GetDashCount();
	XFLOAT GetDash(XINT32 i);
	const CPenGeometry & GetGeometry();
	XFLOAT Get90DegreeBevelOffset();
	HRESULT GetExtents(XFLOAT & rExtents);


protected: 
	CPenGeometry m_oGeom; 
	enum XcpDashStyle m_eDashStyle;
	XFLOAT m_rDashOffset;
	XFLOAT * m_rgDashes;
	XUINT32 m_cDashCount;

};